package com.xinghen.common.base.enums;

/**
 * @author xinghen
 * @ClassName: ErrorType
 * @Package: com.xinghen.common.base.model.enums
 * @Description 错误类型
 * @create 2018-04-11 17:14
 */
public enum ErrorType {

    /**
     * 参数异常
     */
    GL99990100(9999100, "参数异常"),
    /**
     * 无访问权限
     */
    GL99990401(99990401, "无访问权限"),
    /**
     * 未知异常
     */
    GL99990500(500, "未知异常"),
    /**
     * 无权访问
     */
    GL99990403(9999403, "无权访问"),
    /**
     * 找不到指定资源
     */
    GL9999404(9999404, "找不到指定资源"),
    /**
     * 注解使用错误
     */
    GL99990001(99990001, "注解使用错误"),
    /**
     * 微服务不在线,或者网络超时
     */
    GL99990002(99990002, "微服务不在线,或者网络超时"),


    /********************************************1001 用户中心********************************************/
    /**
     * 会话超时,请刷新页面重试
     */
    UAC10010001(10010001, "会话超时,请刷新页面重试"),
    /**
     * TOKEN解析失败
     */
    UAC10010002(10010002, "TOKEN解析失败"),
    /**
     * 操作频率过快, 您的帐号已被冻结
     */
    UAC10010003(10010003, "操作频率过快, 您的帐号已被冻结"),
    /**
     * 用户未登录
     */
    UAC10010004(10010004, "用户未登录"),
    /**
     * 用户Id不能为空
     */
    UAC10011001(10011001, "用户Id不能为空"),

    /**
     * 找不到用户
     */
    UAC10011002(10011002, "找不到用户,loginName=%s"),

    /**
     * 找不到用户
     */
    UAC10011003(10011003, "找不到用户,userId=%s"),

    /**
     * 找不到用户
     */
    UAC10011004(10011004, "找不到用户,email=%s"),

    /**
     * 手机号不能为空
     */
    UAC10011006(10012006, "手机号不能为空"),

    /**
     * 登录名不能为空
     */
    UAC10011007(10011007, "登录名不能为空"),

    /**
     * 新密码不能为空
     */
    UAC10011008(10011008, "新密码不能为空"),

    /**
     * 确认密码不能为空
     */
    UAC10011009(10011009, "确认密码不能为空"),

    /**
     * 两次密码不一致
     */
    UAC10011010(10011010, "两次密码不一致"),

    /**
     * 用户不存在
     */
    UAC10011011(10011011, "用户不存在, userId=%s"),

    /**
     * 登录名已存在
     */
    UAC10011012(10011012, "登录名已存在"),

    /**
     * 手机号已存在
     */
    UAC10011013(10011013, "手机号已存在"),

    /**
     * 密码不能为空
     */
    UAC10011014(10011014, "密码不能为空"),

    /**
     * 用户名或密码错误
     */
    UAC10011016(10011016, "用户名或密码错误"),

    /**
     * 验证类型错误
     */
    UAC10011017(10011017, "验证类型错误"),

    /**
     * 邮箱不能为空
     */
    UAC10011018(10011018, "邮箱不能为空"),

    /**
     * 邮箱已存在
     */
    UAC10011019(10011019, "邮箱已存在"),

    /**
     * 短信模板不能为空
     */
    UAC10011020(10011020, "短信模板不能为空"),

    /**
     * 发送短信验证码对象转换为json字符串失败
     */
    UAC10011021(10011021, "发送短信验证码对象转换为json字符串失败"),

    /**
     * 发送短信验证码失败
     */
    UAC10011022(10011022, "发送短信验证码失败"),

    /**
     * 越权操作
     */
    UAC10011023(10011023, "越权操作"),

    /**
     * 找不到绑定的用户
     */
    UAC10011024(10011024, "找不到绑定的用户, userId=%"),

    /**
     * 用户已存在
     */
    UAC10011025(10011025, "用户已存在, loginName=%"),

    /**
     * 更新用户失败
     */
    UAC10011026(10011026, "更新用户失败, userId=%"),

    /**
     * 找不到用户
     */
    UAC10011027(10011027, "找不到用户,mobile=%s"),

    /**
     * 链接已失效
     */
    UAC10011028(10011028, "链接已失效"),

    /**
     * 重置密码失败
     */
    UAC10011029(10011029, "重置密码失败"),

    /**
     * 激活失败, 链接已过期
     */
    UAC10011030(10011030, "激活失败, 链接已过期"),

    /**
     * 验证码超时, 请重新发送验证码
     */
    UAC10011031(10011031, "验证码过期, 请重新获取验证码"),

    /**
     * 邮箱不存在
     */
    UAC10011032(10011032, "邮箱不存在, loginName=%s,email=%s"),

    /**
     * 清空该用户常用菜单失败
     */
    UAC10011033(10011033, "清空该用户常用菜单失败"),

    /**
     * 不允许操作ADMIN用户
     */
    UAC10011034(10011034, "不允许操作admin用户"),

    /**
     * 原始密码输入错误
     */
    UAC10011035(10011035, "原始密码输入错误"),

    /**
     * 新密码和原始密码不能相同
     */
    UAC10011036(10011036, "新密码和原始密码不能相同"),

    /**
     * 修改用户失败
     */
    UAC10011037(10011037, "修改用户失败,userId=%s"),

    /**
     * 激活用户失败
     */
    UAC10011038(10011038, "激活用户失败,userId=%s"),

    /**
     * 验证token失败
     */
    UAC10011039(10011039, "验证token失败"),

    /**
     * 解析header失败
     */
    UAC10011040(10011040, "解析header失败"),

    /**
     * 页面已过期,请重新登录
     */
    UAC10011041(10011041, "页面已过期,请重新登录"),

    /**
     * Cookie转码异常
     */
    UAC10011042(10011042, "Cookie转码异常"),

    /**
     * 角色ID不能为空
     */
    UAC10012001(10012001, "角色ID不能为空"),

    /**
     * 拥有的角色不允许禁用
     */
    UAC10012002(10012002, "拥有的角色不允许禁用"),

    /**
     * 系统角色不能删除
     */
    UAC10012003(10012003, "系统角色不能删除"),

    /**
     * 超级角色Id不能为空
     */
    UAC10012004(10012004, "超级角色Id不能为空"),

    /**
     * 找不到角色信息
     */
    UAC10012005(10012005, "找不到角色信息,roleId=%s"),

    /**
     * 删除角色失败
     */
    UAC10012006(10012006, "删除角色失败, roleId=%s"),

    /**
     * 批量删除角色失败
     */
    UAC10012007(10012007, "批量删除角色失败, roleId=%s"),

    /**
     * 找不到绑定的角色
     */
    UAC10012008(10012008, "找不到绑定的角色, roleId=%s"),

    /**
     * 父菜单不存在
     */
    UAC10013001(10013001, "父菜单不存在,menuId=%s"),

    /**
     * 更新上级菜单失败
     */
    UAC10013002(10013002, "更新上级菜单失败,menuId=%s"),

    /**
     * 菜单不存在
     */
    UAC10013003(10013003, "菜单不存在,menuId=%s"),

    /**
     * 启用菜单失败
     */
    UAC10013004(10013004, "启用菜单失败,menuId=%s"),

    /**
     * 禁用菜单失败
     */
    UAC10013005(10013005, "禁用菜单失败,menuId=%s"),

    /**
     * 更新菜单状态失败
     */
    UAC10013006(10013006, "更新菜单状态失败,menuId=%s"),

    /**
     * 根菜单不能禁用
     */
    UAC10013007(10013007, "根菜单不能禁用"),

    /**
     * 删除菜单失败
     */
    UAC10013008(10013008, "删除菜单失败, menuId=%s"),

    /**
     * 请先分配菜单
     */
    UAC10013009(10013009, "请先分配菜单"),

    /**
     * 选择菜单不是根目录
     */
    UAC10013010(10013010, "选择菜单不是根目录,menuId=%s"),

    /**
     * 找不到权限信息
     */
    UAC10014001(10014001, "找不到权限信息, actionId=%s"),

    /**
     * 删除失败
     */
    UAC10014002(10014002, "删除权限失败, actionId=%s"),

    /**
     * 保存权限信息失败
     */
    UAC10014003(10014003, "保存权限信息失败"),

    /**
     * 找不到组织信息
     */
    UAC10015001(10015001, "找不到组织信息,groupId=%s"),

    /**
     * 组织状态不存在
     */
    UAC10015002(10015002, "组织状态不存在"),

    /**
     * 操作越权, 启用子节点, 必须先启用父节点
     */
    UAC10015003(10015003, "操作越权, 启用子节点, 必须先启用父节点"),

    /**
     * 找不到组织信息
     */
    UAC10015004(10015004, "找不到组织信息,groupId=%s"),

    /**
     * 更新组织信息失败
     */
    UAC10015006(10015006, "更新组织信息失败,groupId=%s"),

    /**
     * 该组织下还存在子节点，不能将其删除
     */
    UAC10015007(10015007, "该组织下还存在子节点，不能将其删除, Pid=%s"),

    /**
     * 该组织下已绑定用户，不能将其删除
     */
    UAC10015008(10015008, "该组织下已绑定用户，不能将其删除, groupId=%s"),

    /**
     * 找不到上级组织
     */
    UAC10015009(10015009, "找不到上级组织, groupId=%s"),


    /********************************************1002 数据中心********************************************/
    /**
     * 获取地址信息失败
     */
    MDC10021001(10021001, "获取地址信息失败"),

    /**
     * 找不到该地址信息
     */
    MDC10021002(10021002, "找不到该地址信息"),

    /**
     * 获取商品信息失败
     */
    MDC10021003(10021003, "获取商品信息失败"),

    /**
     * 找不到该商品信息
     */
    MDC10021004(10021004, "找不到该商品信息,productId=%s"),

    /**
     * 商品不是在线售卖状态
     */
    MDC10021015(10021015, "商品不是在线售卖状态, productId=%s"),

    /**
     * 商品库存不足
     */
    MDC10021016(10021016, "商品库存不足, productId=%s"),

    /**
     * 产品已下架或者删除
     */
    MDC10021017(10021017, "产品已下架或者删除, productId=%s"),

    /**
     * 找不到数据字典信息
     */
    MDC10021018(10021018, "找不到数据字典信息, dictId=%s"),

    /**
     * 更新字典状态失败
     */
    MDC10021019(10021019, "更新字典状态失败, dictId=%s"),

    /**
     * 上级数据字典不存在
     */
    MDC10021020(10021020, "上级数据字典不存在, dictId=%s"),

    /**
     * 商品ID不能为空
     */
    MDC10021021(10021021, "商品ID不能为空"),

    /**
     * 商品编码不能为空
     */
    MDC10021024(10021024, "商品编码不能为空"),

    /**
     * 找不到商品分类信息
     */
    MDC10023001(10023001, "找不到商品分类信息, categoryId=%s"),

    /**
     * 上级商品分类不存在
     */
    MDC10023002(10023002, "上级商品分类不存在, categoryId=%s"),

    /**
     * 更新商品分类状态失败
     */
    MDC10023003(10023003, "更新商品分类状态失败, categoryId=%s"),

    /**
     * 更新商品信息失败
     */
    MDC10021022(10021022, "更新商品信息失败, productId=%s"),

    /**
     * 删除商品信息失败
     */
    MDC10021023(10021023, "删除商品信息失败, productId=%s"),


    /********************************************1003 订单中心********************************************/
    /**
     * 购物车为空
     */
    OMC10031001(10031001, "购物车为空, userId=%s"),

    /**
     * 生成订单失败
     */
    OMC10031002(10031002, "生成订单失败"),

    /**
     * 该用户此订单不存在
     */
    OMC10031003(10031003, "该用户此订单不存在"),

    /**
     * 已付款, 无法取消订单
     */
    OMC10031004(10031004, "已付款, 无法取消订单"),

    /**
     * 找不到订单信息
     */
    OMC10031005(10031005, "找不到订单信息, orderNo=%s"),

    /**
     * 清空购物车失败
     */
    OMC10031006(10031006, "清空购物车失败"),

    /**
     * 不存在默认地址
     */
    OMC10031007(10031007, "不存在默认地址"),

    /**
     * 更新默认地址失败
     */
    OMC10031008(10031008, "更新默认地址失败, addressId=%s"),

    /**
     * 批量插入订单明细失败
     */
    OMC10031009(10031009, "批量插入订单明细失败"),

    /**
     * 非本平台订单, 回调忽略
     */
    OMC10031010(10031010, "非本平台订单, 回调忽略"),

    /**
     * 支付宝重复调用
     */
    OMC10031011(10031011, "支付宝重复调用"),

    /**
     * 上传失败
     */
    OMC10031012(10031012, "上传失败"),

    /**
     * 获取附件地址失败
     */
    OMC10031013(10031013, "获取附件地址失败"),

    /**
     * 更新购物车数据失败
     */
    OMC10031014(10031014, "更新购物车数据失败, cartId=%s"),


    /********************************************1004 对接中心********************************************/
    /**
     * 根据IP定位失败
     */
    OPC10040001(10040001, "根据IP定位失败"),

    /**
     * 上传文件失败
     */
    OPC10040002(10040002, "上传文件失败"),

    /**
     * 文件类型不符
     */
    OPC10040003(10040003, "文件类型不符"),

    /**
     * 发送短信失败
     */
    OPC10040004(10040004, "发送短信失败"),

    /**
     * 生成邮件消息体失败
     */
    OPC10040005(10040005, "生成邮件消息体失败"),

    /**
     * 获取模板信息失败
     */
    OPC10040006(10040006, "获取模板信息失败"),

    /**
     * 更新附件失败
     */
    OPC10040007(10040007, "更新附件失败, id=%s"),

    /**
     * 找不到该附件信息
     */
    OPC10040008(10040008, "找不到该附件信息, id=%s"),

    /**
     * 上传图片失败
     */
    OPC10040009(10040009, "上传图片失败"),

    /**
     * 文件名不能为空
     */
    OPC10040010(10040010, "文件名不能为空"),

    /**
     * 今日流量已用尽, 请明天再试
     */
    OPC10040011(10040011, "今日流量已用尽, 请明天再试"),


    /********************************************1005 任务中心********************************************/
    /**
     * 消息的消费Topic不能为空
     */
    TPC10050001(10050001, "消息的消费Topic不能为空"),

    /**
     * 根据消息key查找的消息为空
     */
    TPC10050002(10050002, "根据消息key查找的消息为空"),

    /**
     * 删除消息失败
     */
    TPC10050003(10050003, "删除消息失败,messageKey=%s"),

    /**
     * 消息中心接口异常
     */
    TPC10050004(10050004, "消息中心接口异常,message=%s, messageKey=%s"),

    /**
     * 目标接口参数不能为空
     */
    TPC10050005(10050005, "目标接口参数不能为空"),

    /**
     * 根据任务Id查找的消息为空
     */
    TPC10050006(10050006, "根据任务Id查找的消息为空"),

    /**
     * 消息数据不能为空
     */
    TPC10050007(10050007, "消息数据不能为空"),

    /**
     * 消息体不能为空
     */
    TPC10050008(10050008, "消息体不能为空,messageKey=%s"),

    /**
     * 消息KEY不能为空
     */
    TPC10050009(10050009, "消息KEY不能为空"),

    /**
     * 无消费者订阅
     */
    TPC100500010(10050010, "Topic=%s, 无消费者订阅"),

    /**
     * Mq编码转换异常
     */
    TPC100500011(10050011, "Mq编码转换异常, MessageKey=%s"),

    /**
     * 发送MQ失败
     */
    TPC100500012(10050012, "发送MQ失败, MessageKey=%s"),

    /**
     * 延迟级别错误
     */
    TPC100500013(10050013, "延迟级别错误, Topic=%s, MessageKey=%s"),

    /**
     * MQ重试三次,仍然发送失败
     */
    TPC100500014(10050014, "MQ重试三次,仍然发送失败, Topic=%s, MessageKey=%s"),

    /**
     * 消息PID不能为空
     */
    TPC100500015(10050015, "消息PID不能为空, messageKey=%s"),;

    int code;
    String msg;

    ErrorType(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public static ErrorType getErrorType(int code) {
        for (ErrorType ele : ErrorType.values()) {
            if (ele.getCode() == code) {
                return ele;
            }
        }
        return null;
    }

    @Override
    public String toString() {
        return getMsg();
    }
}
